/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package servlets;

import com.beans.UsuarioBean;
import com.debug.Debug;
import com.util.Conectar;
import java.io.*;
import java.net.*;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import javax.naming.NamingException;
import javax.servlet.*;
import javax.servlet.http.*;

/**
 *
 * @author victor
 */
public class eliminarNoticia extends HttpServlet {
   
    /** 
    * Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
    * @param request servlet request
    * @param response servlet response
    */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        response.setContentType("text/html;charset=iso-8859-1");
        PrintWriter out = response.getWriter();
        HttpSession sesion= request.getSession();
        UsuarioBean usuario=(UsuarioBean)sesion.getAttribute("usuario");
        if(!usuario.categoriaValida("4")){
            Debug.getInstance().putLog(request, "El usuario ha intentado borrar un archivo y no tiene permiso");
            out.println(2);
            //response.sendRedirect("/error.jsp");
        }else{
            try {
                String name=(String) request.getParameter("par1");
                String id=(String) request.getParameter("par3");
                if(!this.esUnArchivo(name)){
                    out.println(1);
                }else{
                    String archivo="/var/lib/tomcat5.5/webapps/archivos/imagenes/noticias/"+name+".jpg";
                    String archivo150="/var/lib/tomcat5.5/webapps/archivos/imagenes/noticias/"+name+"150x150.jpg";
                    //String archivo="\\usr\\share\\tomcat5.5\\webapps\\archivos\\perfil\\index.gif";
                    //String archivo=request.getParameter("archivo");
                    Debug.getInstance().putLog(request,"[Servlet]Borrando archivo: "+archivo);
                    File f=new File(archivo150);
                    f.delete();
                    f=new File(archivo);
                    if(f.delete()){
                        if(borrar(id)){
                            out.println(0);
                        }else{
                            out.println(1);
                        }
                    }else{
                        out.println(1);
                    }

                }
            } finally { 
                out.close();
            }
        }
    } 
/**
     * Eliminar de la base de datos el valor del campo pasado en la tupla del id pasado
     * @param id id de la fila a modificar
     * @return true si se elimina el campo de la base de datos y false si no se modifica nada
     */
    private boolean borrar(String id){
        try {
            Connection conexion;

            conexion = Conectar.getConnection();
            //System.out.println("Fecha Mysql: " + Utils.fechaParaMysql(this.getBOP()));
            String updateSQL = "UPDATE noticias SET archivoImagen='' ,imagen='' "+
                    "where idNoticia=?";
            PreparedStatement updateStatement = null;
            updateStatement = (PreparedStatement) conexion.prepareStatement(updateSQL);
            updateStatement.setString(1, id);
            //selectStatement.setString(1, id);
            if(updateStatement.executeUpdate()>=1){
                return true;
            }else{
                return false;
            }
        } catch (NamingException ex) {
            ex.printStackTrace();
            return false;
        } catch (SQLException ex) {
            ex.printStackTrace();
            return false;
        }
    }
    /**
     * Comprueba que el nombre de archivo no tenga dos puntos seguidos, lo que implicaría
     * que estamos saliendo de la carpeta marcada.
     * @param name Nombre del archivo que hemos recibido por parámetros
     * @return true si el nombre del archivo no tiene dos puntos seguidos. False si sí los tiene.
     */
    private boolean esUnArchivo(String name){
        //Comprobar que no tiene dos puntos seguidos, lo cual probocaría cambiar de carpeta
        if(name.indexOf("..")!=-1){
            return false;
        }else{
            return true;
        }
    }
    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /** 
    * Handles the HTTP <code>GET</code> method.
    * @param request servlet request
    * @param response servlet response
    */
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    } 

    /** 
    * Handles the HTTP <code>POST</code> method.
    * @param request servlet request
    * @param response servlet response
    */
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    }

    /** 
    * Returns a short description of the servlet.
    */
    public String getServletInfo() {
        return "Short description";
    }
    // </editor-fold>
}
